AWS Verified Access がTCP経由での接続をサポートしました (プレビュー) #AWSreInvent

AWS Verified Access がTCP経由での接続をサポートしました (プレビュー) #AWSreInvent

Verified Accessの可能性が一気に広がった
Clock Icon2024.12.02

いろんなプロトコルにVerified Accessを介してアクセスしたい

こんにちは、のんピ(@non____97)です。

皆さんはいろんなプロトコルにVerified Accessを介してアクセスしたいなと思ったことはありますか? 私はあります。

Verified Access を用いることでVPNを用意しなくともさまざまなアプリケーションへ接続することが可能です。さらにデバイス信頼プロバイダーを使用すれば、デバイスの状態を元に認証認可を行なうことだって可能です。

リリースされて2年間Verified Accessは元々HTTPとHTTPSのみサポートしていました。

そんな折、プレビューですがTCPもサポートしてくれるようになりました。

https://aws.amazon.com/about-aws/whats-new/2024/12/aws-verified-access-secure-access-resources-non-https-protocols-preview/

AWS Blogsにも投稿されています。

https://aws.amazon.com/blogs/aws/aws-verified-access-now-supports-secure-access-to-resources-over-non-https-protocols/

これによってWebアプリケーションだけでなく、SSHやRDP、DB接続、SMTPなどさまざまなプロトコルで接続することが可能になります。

非常に夢が広がりますね。

実際に触ってみました。

やってみた

検証環境

検証環境の構成図は以下のとおりです。

AWS Verified Access がTCP経由での接続をサポートしました (プレビュー) #AWSreInvent検証環境構成図.png

Verified Access経由でEC2インスタンスにSSH接続をします。

Verified Access信頼プロバイダーの作成

Verified Accessのリソースを順次作成します。

まずは信頼プロバイダーです。

今回はユーザー信頼プロバイダーでプロバイダータイプをIAM Identity Centerとします。

1.Verified Access 信頼プロバイダーを作成.png

作成したリソースは以下のとおりです。

2.Verified Access 信頼プロバイダーの確認.png

Verified Accessインスタンスの作成

続けてVerified Accessインスタンスの作成をします。

先ほど作成した信頼プロバイダーを指定してあげます。

3.Verified Access インスタンスを作成.png

作成したリソースは以下のとおりです。

4.Verified Access インスタンスの確認.png

ログ記録設定やWAFとの統合は今回は行いません。

Verified Accessグループの作成

Verified Accessグループの作成を行います。

5.Verified Access グループを作成.png

設定したポリシーは以下のとおり、IAM Identitty Centerの認証を突破したユーザーすべてとします。

permit(principal,action,resource)
when {
    true
};

そのほかのポリシーの書き方は以下AWS公式ドキュメントが参考になります。

https://docs.aws.amazon.com/verified-access/latest/ug/trust-data-iam-add-pol.html

Verified Access エンドポイントを作成

Verified Access エンドポイントを作成します。

先ほど作成したグループを指定します。

6.Verified Access エンドポイントを作成1.png

プロトコルとしてTCPを指定します。

VPCの特定CIDR内に配置されたIPアドレスでTCP/3389もしくはTCP/22が空いているものに接続できるように設定します。

7.Verified Access エンドポイントを作成2.png

ポリシーはグループ側で設定したので未設定です。

8.Verified Access エンドポイントを作成3.png

作成すると以下のようになります。

9.Verified Access エンドポイント.png

アクティブ IP アドレスのドメイン名を確認すると、指定したCIDRにVerified Accessのエンドポイントが作成されるようにしてしまったので、すでに一つ追加されてしまっています。

10.アクティブ IP アドレスのドメイン名.png

クライアント構成ファイルのエクスポート

Verified Accessを使用する際に必要なクライアント構成ファイルのエクスポートします。

マネジメントコンソールで信頼ポリシーからエクスポートすることも可能ですが、今回はexport-verified-access-instance-client-configurationを使用します。

AWS CLI v2の場合は2.22.8以降から使用できます。

> aws ec2 export-verified-access-instance-client-configuration \
     --verified-access-instance-id "vai-0ea88838150499c9d"
{
    "Version": "1.0",
    "VerifiedAccessInstanceId": "vai-0ea88838150499c9d",
    "Region": "us-east-1",
    "DeviceTrustProviders": [],
    "UserTrustProvider": {
        "Type": "iam-identity-center",
        "Scopes": "verified_access:application:connect",
        "Issuer": "https://identitycenter.amazonaws.com/ssoins-722375f388e8cd2d",
        "PkceEnabled": true
    },
    "OpenVpnConfigurations": [
        {
            "Config": "Y2x..(略)..WU=",
            "Routes": [
                {
                    "Cidr": "2600:1f18:216d:aa00::/57"
                }
            ]
        }
    ]
}

Connectivity Clientのインストール

TCPで接続する際はConnectivity Clientというソフトウェアをローカル端末にインストールする必要があります。

現時点では以下の3つのクライアントをサポートしています。

  • macOS Apple silicon版
  • macOS Interl CPU版
  • Windows版

ダウンロードリンクは以下のとおりです。

https://aws.amazon.com/jp/verified-access/connectivity-client-download/

ウィザードに従いインストールまで完了すると以下のようにConnectivity Clientが自動で起動します。

12.サインイン.png

Connectivity Clientの設定

先ほどエクスポートしたクライアント構成ファイルを用いてConnectivity Clientの設定を行います。

私はmacOSなので/Library/Application\ Support/Connectivity\ Client/ClientConfig-1.jsonというパスに所有者rootで配置しました。

>  sudo vi /Library/Application\ Support/Connectivity\ Client/ClientConfig-1.json
Password:

>  ls -l /Library/Application\ Support/Connectivity\ Client/
total 216
-rw-r--r--@ 1 root  wheel   2959 12  2 03:04 ClientConfig-1.json
drwxr-xr-x  7 root  wheel    224 12  2 03:04 Launch/
drwxr-xr-x  7 root  wheel    224 12  2 03:04 Staging/
drwxr-xr-x  4 root  wheel    128 12  2 03:04 User/
srwxr-xr-x  1 root  wheel      0 12  2 03:04 connectivityclient-messagebroker.sock=
-rw-r--r--  1 root  wheel   4096 12  2 03:04 connectivityclient-secure-store.db
-rw-r--r--  1 root  wheel  32768 12  2 03:04 connectivityclient-secure-store.db-shm
-rw-r--r--  1 root  wheel  61832 12  2 03:04 connectivityclient-secure-store.db-wal
srwxr-xr-x  1 root  wheel      0 12  2 03:04 connectivityclient-shell.sock=
-rw-r--r--  1 root  wheel    272 12  2 03:04 dbsettings.json

Windowsの場合はC:\ProgramData\Connectivity Clientで、所有者がAdminである必要があります。

また、実際の運用ではこちらのファイルを対象の全クライアントに配布することになります。

なお、ローンチブログではClientConfig1.jsonというファイル名でファイルを作成していますが、こちらではエラーになります。

以下ドキュメントで紹介されているとおり、プレフィックスはClientConfig-である必要があります。

Use the export-verified-access-instance-client-configuration command. Save the output to a .json file. The file name must start with the ClientConfig- prefix.

Connectivity Client for AWS Verified Access - AWS Verified Access

このままサインインしようとすると、以下のようにタイムアウトしてしまいます。

15.Connectivity Client がデータにアクセスすることを許可しますか?.png

Connectivity Clientを用いた認証

クライアント構成ファイルを設定したので、Connectivity Clientを用いた認証を行います。

Connectivity Clientにてサインインをクリックすると、ブラウザウィンドウが開きます。

13.Amazon_Web_Services.png

その後は通常のIAM Identity Centerと同様に認証情報を入力していきます。

最後まで入力するとConnectivity Client がデータにアクセスすることを許可しますか?と聞かれます。

14.Connectivity Client がデータにアクセスすることを許可しますか?.png

アクセスを許可をクリックするとYou have successfully signed in Continue to Connectivity Client.と表示されます。

16.You have successfully signed in Continue to Connectivity Client. You may close this browser tab..png

すると、Status 接続中となります。

17.Status 接続中.png

このまま待っているとPylon アプリを再起動してください。このエラーが続く場合は、管理者に連絡してください。と表示されました。

18.Status- 切断済み Pylon アプリを再起動してください。このエラーが続く場合は、管理者に連絡してください。.png

指示に従いConnectivity Clientを再起動しても変わりありませんでした。また、Connectivity Clientを再インストールをしても変わりありませんでした。

診断ログには大量のエラー結果が出力されていました。しかし、この時点で、AM 3:47。心が折れる音がしました。

Verified Accessの可能性が一気に広がった

AWS Verified Access がTCP経由での接続をサポートしたアップデートを紹介しました。

残念ながら私の環境では接続することはできませんでしたが、SSHやRDPなどの管理系のプロトコルを用いた接続の認証を簡略化したい場合や、Webアプリではないクラサバ式のアプリにも使える非常にありがたいアップデートだと思います。

注意点としては別途クライアントには構成ファイルを配布し、Connectivity Clientをインストール設定する必要がある点です。何かしらのソフトウェア配布の仕組みの導入が必要だと考えます。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.